using System;
using CUtil;

namespace CStock
{

    public interface ITradeSimulation : IStockObjectBase
    {
        //ITradeStep TradeStep { get; set;}
       
        //ITradeStep TradeStepPortfolio { get; }

        bool SetTradeOrders();
        bool SetDefaultTradeSystem();

        void ResetIndicators(IDataItem myDataItem);
        //bool Reset(IGrid MyGridTrade, IProgramContext myprogramContext);
        bool SimulationShare(IDataItem myDataItem, TradeWriteModes TradeWriteModes, bool WriteSimulationResult, 
            bool inOptimizationLoop, IGrid myGrid);

        bool Intraday { get; }
       
        IGrid GridTrade { get; set;}
        void Optimize(IPortfolio myPortfolio, IDataItem myDataItem, bool IsDataClass, IGrid myGrid);
        void OptimizePortfolio_1_Overall(IPortfolio myPortfolio, IGrid myGrid);

        void PrognosisPortfolio(IPortfolio myPortf, DateTime myDate, int myTradeSystemIndex);
        void PrognosisPortfolioAdvanced(IPortfolio myPortf);
        bool SimulationPortfolio_PerDate(IPortfolio myPortf, TradeWriteModes myTradeMode, bool inOptimizationStep, IGrid myGrid);
        bool SimulationPortfolio_Individual(IPortfolio myPortf, TradeWriteModes myTradeMode, 
            IGrid myGrid, bool inOptimizationLoop);

        bool RefreshTradeSystemIndicator(IDataClass dc, ITradeSystem ts, bool forceRefresh);
        bool SetTradeSystem(string filename);


        ITradeSystem TradeSystem { get; set;}
        

    }
}
